package br.com.projetosivan.dao.impl;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;

import br.com.projetosivan.dao.FotoProdutoDao;
import br.com.projetosivan.model.FotoProduto;
import br.com.projetosivan.util.HibernateUtil;

public class FotoProdutoDaoImp implements FotoProdutoDao {

    public void save(FotoProduto item) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.save(item);
        t.commit();
        session.flush();
        session.close();
    }
    public List<FotoProduto> getListFotoProduto(Long id) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        @SuppressWarnings("unchecked")
		List<FotoProduto> lista = (ArrayList<FotoProduto>)
        	session.createQuery("from FotoProduto where id_produto = :id order by numOrdem")
        	.setParameter("id", id).list();
        return lista;
    }
    public List<FotoProduto> list() {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        List lista = session.createQuery("from FotoProduto order by nome").list();
        t.commit();
        session.flush();
        session.close();
        
        return lista;
    }
    
    public void remove(FotoProduto item) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.delete(item);
        t.commit();
        session.flush();
        session.close();
    }
    
    public void update(FotoProduto item) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.update(item);
        t.commit();
        session.flush();
        session.close();
    }
	@Override
	public void removeAll(List<FotoProduto> itens) {
		Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        String caminho = "c:/app/images/produtos/";
        for(int i = 0 ; i < itens.size() ; i++){
        	session.delete(itens.get(i));
        	File f = new File(caminho + itens.get(i).getCaminho());
        	if(f.exists()){
        		f.delete();
        	}
        }
        t.commit();
        session.flush();
        session.close();
	}
}